package com.yf.dxapp.module.app.service.behavior;

import com.yf.dxapp.module.app.controller.admin.behavior.vo.BehaviorPageReqVO;
import com.yf.dxapp.module.app.controller.admin.behavior.vo.BehaviorSaveReqVO;
import jakarta.validation.*;
import com.yf.dxapp.module.app.dal.dataobject.behavior.BehaviorDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 行为记录 Service 接口
 *
 * @author 芋道源码
 */
public interface BehaviorService {

    /**
     * 创建行为记录
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createBehavior(@Valid BehaviorSaveReqVO createReqVO);

    /**
     * 更新行为记录
     *
     * @param updateReqVO 更新信息
     */
    void updateBehavior(@Valid BehaviorSaveReqVO updateReqVO);

    /**
     * 删除行为记录
     *
     * @param id 编号
     */
    void deleteBehavior(Long id);

    /**
     * 获得行为记录
     *
     * @param id 编号
     * @return 行为记录
     */
    BehaviorDO getBehavior(Long id);

    /**
     * 获得行为记录分页
     *
     * @param pageReqVO 分页查询
     * @return 行为记录分页
     */
    PageResult<BehaviorDO> getBehaviorPage(BehaviorPageReqVO pageReqVO);

    /**
     * @param userId  操作人
     * @param refId   操作主体
     * @param type    行为类型
     * @param remark  行为内容
     * @param minTime 持续进行行为最小时间范围
     */
    void record(Long loginUserId, Long refId, Integer type, String behavior, int minTime);
}